package joc.internal.transformer.helper;

import java.lang.annotation.Annotation;
import java.util.List;

import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.NotFoundException;

public abstract class ImplicitContract {

	private String configValue;
	private Class<? extends Annotation> contractAnnotation;

	public ImplicitContract(String configValue, Class<? extends Annotation> contractAnnotation) {
		this.configValue = configValue;
		this.contractAnnotation = contractAnnotation;
	}

	public String getConfigValue() {
		return configValue;
	}

	public Class<? extends Annotation> getContractAnnotation() {
		return contractAnnotation;
	}

	public abstract List<CtMethod> getAffectedMethods(ClassPool pool, CtClass targetClass) throws NotFoundException;

}